package org.geek4j.iTextT;

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.junit.Test;

import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

/**
 * @author Geek4J
 * @description generate pdf via render template
 */
public class RenderTemplateT {

	@Test
	public void renderTpl() {
		try {
			/* 打开已经定义好字段以后的pdf模板 */
			String tplPath = RenderTemplateT.class.getResource("hello.pdf").getPath();
			PdfReader reader = new PdfReader(tplPath);

			/* 将要生成的目标PDF文件名称 */
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream("hello-resule.pdf"));

			/* 使用中文字体 */
			BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

			/* 取出报表模板中的所有字段 */
			AcroFields form = stamp.getAcroFields();
			form.addSubstitutionFont(bf);

			/* 为字段赋值,注意字段名称是区分大小写的 */
			form.setField("curr_date", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
			form.setField("report_no", "001");
			form.setField("customer_real_name", "宋骁");
			form.setField("customer_company_name", "文思海辉");
			form.setField("customer_company_address", "北京 海淀 西二旗");
			form.setField("customer_email", "Geek4J@GMAIL.COM");
			form.setField("customer_company_phone", "13146444400");

			form.setField("province", "北京 市");
			form.setField("city", "海淀 区");
			form.setField("address", "上地七街");

			form.setField("service_content", "我们提供的巡检服务是指根据客户的需要，在指定时间对客户设备进行全面检查的服务。");
			form.setField("service_content_exclude", "我们提供的巡检服务是指根据客户的需要，在指定时间对客户设备进行全面检查的服务。");
			form.setField("total", "2500元");

			stamp.setFormFlattening(true);

			PdfContentByte canvas = stamp.getOverContent(1);
			PdfPTable header = new PdfPTable(7);

			PdfPCell cell1 = new PdfPCell(new Paragraph("Title 1"));
			PdfPCell cell2 = new PdfPCell(new Paragraph("Title 2"));
			PdfPCell cell3 = new PdfPCell(new Paragraph("Title 3"));
			PdfPCell cell4 = new PdfPCell(new Paragraph("Title 4"));
			PdfPCell cell5 = new PdfPCell(new Paragraph("Title 5"));
			PdfPCell cell6 = new PdfPCell(new Paragraph("Title 6"));
			PdfPCell cell7 = new PdfPCell(new Paragraph("Title 7"));

			header.addCell(cell1);
			header.addCell(cell2);
			header.addCell(cell3);
			header.addCell(cell4);
			header.addCell(cell5);
			header.addCell(cell6);
			header.addCell(cell7);
			// add data to table
			header.setTotalWidth(100);
			header.writeSelectedRows(1, 10, 10.0f, 10.0f, canvas);
			/* 必须要调用这个，否则文档不会生成的 */
			stamp.close();
			reader.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
